# Copyright (C) 2023 LAAS-CNRS, JRL AIST-CNRS, INRIA.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
SET(PYTHON_EXECUTABLE @PYTHON_EXECUTABLE@)
SET(MEMORYCHECK_COMMAND @MEMORYCHECK_COMMAND@)
SET(PYTHON_TEST_SCRIPT @PYTHON_TEST_SCRIPT@)

execute_process(COMMAND
  ${MEMORYCHECK_COMMAND} -- ${PYTHON_EXECUTABLE} ${PYTHON_TEST_SCRIPT}
  ERROR_VARIABLE MEMORYCHECK_OUTPUT)

# Check if there is some memory leaks
string(FIND "${MEMORYCHECK_OUTPUT}" "definitely lost: 0 bytes in 0 blocks" DEFINITELY_LOST)
string(FIND "${MEMORYCHECK_OUTPUT}" "indirectly lost: 0 bytes in 0 blocks" INDIRECTLY_LOST)

if(${DEFINITELY_LOST} GREATER -1 AND ${INDIRECTLY_LOST} GREATER -1)
  message(STATUS "${PYTHON_TEST_SCRIPT} is not leaking memory")
else()
  message(FATAL_ERROR "Output: ${MEMORYCHECK_OUTPUT}\n"
    "${PYTHON_TEST_SCRIPT} is leaking memory\n")
endif()
